// Licensed to Elasticsearch B.V under one or more agreements.
// Elasticsearch B.V licenses this file to you under the Apache 2.0 License.
// See the LICENSE file in the project root for more information.
//
// ███╗   ██╗ ██████╗ ████████╗██╗ ██████╗███████╗
// ████╗  ██║██╔═══██╗╚══██╔══╝██║██╔════╝██╔════╝
// ██╔██╗ ██║██║   ██║   ██║   ██║██║     █████╗
// ██║╚██╗██║██║   ██║   ██║   ██║██║     ██╔══╝
// ██║ ╚████║╚██████╔╝   ██║   ██║╚██████╗███████╗
// ╚═╝  ╚═══╝ ╚═════╝    ╚═╝   ╚═╝ ╚═════╝╚══════╝
// ------------------------------------------------
//
// This file is automatically generated.
// Please do not edit these files manually.
//
// ------------------------------------------------

#nullable restore

using System;
using System.Linq;
using Elastic.Clients.Elasticsearch.Serialization;

namespace Elastic.Clients.Elasticsearch.Core.Search;

[System.Text.Json.Serialization.JsonConverter(typeof(Elastic.Clients.Elasticsearch.Core.Search.Json.QueryBreakdownConverter))]
public sealed partial class QueryBreakdown
{
	[System.Diagnostics.CodeAnalysis.SetsRequiredMembers]
	public QueryBreakdown(long advance, long advanceCount, long buildScorer, long buildScorerCount, long computeMaxScore, long computeMaxScoreCount, long countWeight, long countWeightCount, long createWeight, long createWeightCount, long match, long matchCount, long nextDoc, long nextDocCount, long score, long scoreCount, long setMinCompetitiveScore, long setMinCompetitiveScoreCount, long shallowAdvance, long shallowAdvanceCount)
	{
		Advance = advance;
		AdvanceCount = advanceCount;
		BuildScorer = buildScorer;
		BuildScorerCount = buildScorerCount;
		ComputeMaxScore = computeMaxScore;
		ComputeMaxScoreCount = computeMaxScoreCount;
		CountWeight = countWeight;
		CountWeightCount = countWeightCount;
		CreateWeight = createWeight;
		CreateWeightCount = createWeightCount;
		Match = match;
		MatchCount = matchCount;
		NextDoc = nextDoc;
		NextDocCount = nextDocCount;
		Score = score;
		ScoreCount = scoreCount;
		SetMinCompetitiveScore = setMinCompetitiveScore;
		SetMinCompetitiveScoreCount = setMinCompetitiveScoreCount;
		ShallowAdvance = shallowAdvance;
		ShallowAdvanceCount = shallowAdvanceCount;
	}
#if NET7_0_OR_GREATER
	public QueryBreakdown()
	{
	}
#endif
#if !NET7_0_OR_GREATER
	[System.Obsolete("The type contains required properties that must be initialized. Please use an alternative constructor to ensure all required values are properly set.")]
	public QueryBreakdown()
	{
	}
#endif
	[System.Diagnostics.CodeAnalysis.SetsRequiredMembers]
	internal QueryBreakdown(Elastic.Clients.Elasticsearch.Serialization.JsonConstructorSentinel sentinel)
	{
		_ = sentinel;
	}

	public
#if NET7_0_OR_GREATER
	required
#endif
	long Advance { get; set; }
	public
#if NET7_0_OR_GREATER
	required
#endif
	long AdvanceCount { get; set; }
	public
#if NET7_0_OR_GREATER
	required
#endif
	long BuildScorer { get; set; }
	public
#if NET7_0_OR_GREATER
	required
#endif
	long BuildScorerCount { get; set; }
	public
#if NET7_0_OR_GREATER
	required
#endif
	long ComputeMaxScore { get; set; }
	public
#if NET7_0_OR_GREATER
	required
#endif
	long ComputeMaxScoreCount { get; set; }
	public
#if NET7_0_OR_GREATER
	required
#endif
	long CountWeight { get; set; }
	public
#if NET7_0_OR_GREATER
	required
#endif
	long CountWeightCount { get; set; }
	public
#if NET7_0_OR_GREATER
	required
#endif
	long CreateWeight { get; set; }
	public
#if NET7_0_OR_GREATER
	required
#endif
	long CreateWeightCount { get; set; }
	public
#if NET7_0_OR_GREATER
	required
#endif
	long Match { get; set; }
	public
#if NET7_0_OR_GREATER
	required
#endif
	long MatchCount { get; set; }
	public
#if NET7_0_OR_GREATER
	required
#endif
	long NextDoc { get; set; }
	public
#if NET7_0_OR_GREATER
	required
#endif
	long NextDocCount { get; set; }
	public
#if NET7_0_OR_GREATER
	required
#endif
	long Score { get; set; }
	public
#if NET7_0_OR_GREATER
	required
#endif
	long ScoreCount { get; set; }
	public
#if NET7_0_OR_GREATER
	required
#endif
	long SetMinCompetitiveScore { get; set; }
	public
#if NET7_0_OR_GREATER
	required
#endif
	long SetMinCompetitiveScoreCount { get; set; }
	public
#if NET7_0_OR_GREATER
	required
#endif
	long ShallowAdvance { get; set; }
	public
#if NET7_0_OR_GREATER
	required
#endif
	long ShallowAdvanceCount { get; set; }
}